/*
 * 26-abr-2008 
 */
package futbol.tacticas.concursantes.chuky.accion;

import java.awt.Point;

import futbol.General;
import futbol.tacticas.Comando;
import futbol.tacticas.ComandoGolpearBola;
import futbol.tacticas.concursantes.chuky.futbolista.FutbolistaBase;
import futbol.tacticas.concursantes.chuky.util.Balon;

/**
 *
 * @author Joan Crosas
 */
public class AccionGolpearBalon implements Accion {
	private Comando comando;
	
	public AccionGolpearBalon( FutbolistaBase futbolista, Balon balon, int fuerza ) {
		this( futbolista, balon.getPosicion(), balon.getAngulo(), fuerza );
	}
	
	public AccionGolpearBalon( FutbolistaBase futbolista, Point posicion ) {
		comando = new ComandoGolpearBola( futbolista.getNumero() - 1, posicion.x, posicion.y );
	}
	
	public AccionGolpearBalon( FutbolistaBase futbolista, Point posInicio, double angulo, int fuerza ) {
		if( fuerza >= futbolista.getFuerza() ) {
			double x = posInicio.x + 100 * Math.cos( angulo );
			double y = posInicio.y + 100 * Math.sin( angulo );
			comando = new ComandoGolpearBola( futbolista.getNumero() - 1, x, y );
		} else {
			if( fuerza < 5 ) {
				fuerza = 5;
			}
			double distanciaFicticia = Math.round( 50 * fuerza / futbolista.getFuerza() );
			double x = posInicio.x + distanciaFicticia * Math.cos( angulo );
			double y = posInicio.y + distanciaFicticia * Math.sin( angulo );
			
			comando = new ComandoGolpearBola( futbolista.getNumero() - 1, x, y );
		}
	}
	
	public AccionGolpearBalon( FutbolistaBase futbolista, Point posInicio, Point posFin, int fuerza ) {
		this( futbolista, posInicio, General.getAngulo( posInicio.x, posInicio.y, posFin.x, posFin.y ), fuerza );
	}
	
	public Comando getComando() {
		return comando;
	}



}
